
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.educacionit.webprogramming.struts.service;

import ar.com.educacionit.webprogramming.struts.forms.Alumnos;
import ar.com.educacionit.webprogramming.struts.hibernate.manager.EducacionITSessionManager;
//import ar.com.educacionit.webprogramming.abmc.entities;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Hugo
 */
public class AlumnosService {

    public static ArrayList getAlumnosPorCriterio(String unId, String unNombre, String unApellido) throws HibernateException, Exception {

        // Si los paramentros vienen como null, les asigna ""
        if (unId == null)  unId = "";
        
        if (unNombre == null)  unNombre = "";     

        if (unApellido == null) unApellido = "";

        // Instancia el contenedor de alumnos a retornar
        ArrayList losAlumnos = new ArrayList();

        if (unId.equals("") && unNombre.equals("") && unApellido.equals("")) {


            losAlumnos = AlumnosService.getTodos();

        } else {

            String laConsulta = "FROM Alumnos WHERE ";

            if (!unId.equals("")) {
                laConsulta += "alumno_id = " + unId + " AND ";
            }

            if (!unNombre.equals("")) {
                laConsulta += "nombre LIKE '" + unNombre + "%' AND ";
            }

            if (!unApellido.equals("")) {
                laConsulta += "apellido LIKE '" + unApellido + "%'";
            }

            // Si sobra la palabra AND en la consulta, la elimina

            if (laConsulta.endsWith(" AND ")) {
                laConsulta = laConsulta.substring(0, laConsulta.length() - 5);
            }

//            Statement sta = conn.createStatement();
//            ResultSet rs = sta.executeQuery(laConsulta);
//
//            while (rs.next()) {
//                Alumnos elAlumno = new Alumnos();
//
//                elAlumno.setAlumnoId(rs.getInt("alumno_id"));
//                elAlumno.setNombre(rs.getString("nombre"));
//                elAlumno.setApellido(rs.getString("apellido"));
//
//                losAlumnos.add(elAlumno);
//            }
//            sta.close();
//        }
//        return losAlumnos;

            Session session = null;

            // Obtiene la sesion de trabajo e inicia una transaccion
            session = EducacionITSessionManager.getSession();
            session.beginTransaction();

            losAlumnos = (ArrayList) session.createQuery(laConsulta).list();

            // Cierra la sesion
            session.close();
        }
        return losAlumnos;
    }

    public static ArrayList getTodos() {
// Declara una variable del tipo session
        Session session = null;

        // Obtiene la sesion de trabajo e inicia una transaccion
        session = EducacionITSessionManager.getSession();
        session.beginTransaction();

        // Obtiene los concesionarios
        List<Alumnos> losAlumnos = session.createQuery("FROM Alumnos").list();

        // Cierra la sesion
        session.close();
        return (ArrayList) losAlumnos;
    }
//        ArrayList losAlumnos = new ArrayList();
//
//        String laConsulta = "Select alumno_id , nombre, apellido FROM alumnos";
//
//        Statement sta = conn.createStatement();
//        ResultSet rs = sta.executeQuery(laConsulta);
//
//        while (rs.next()) {
//
//            Alumnos elAlumno = new Alumnos();
//            elAlumno.setAlumnoId(rs.getInt("alumno_id"));
//            elAlumno.setApellido(rs.getString("apellido"));
//            elAlumno.setNombre(rs.getString("nombre"));
//
//            //agrega un alumno a la coleccion
//            losAlumnos.add(elAlumno);
//        }
//
//        sta.close();
//
//        return losAlumnos;

    public static Alumnos getSegunID(int unId) {

        Session session = null;

        session = EducacionITSessionManager.getSession();
        session.beginTransaction();

        Alumnos c = (Alumnos) session.load(Alumnos.class, new Integer(unId));

        session.close();

        return c;

    }
//        // Arma la consulta y la ejecuta
//        String laConsulta = "SELECT * FROM alumnos WHERE alumno_id = " + unId;
//        Statement stmtConsulta = conn.createStatement();
//        ResultSet rs = stmtConsulta.executeQuery(laConsulta);
//        Alumnos elAlumno = null;
//
//        // Obtiene los datos
//        if (rs.next()) {
//            // Arma el objeto Alumno a retornar
//            elAlumno = new Alumnos();
//            elAlumno.setAlumnoId(rs.getInt("alumno_id"));
//            elAlumno.setNombre(rs.getString("nombre"));
//            elAlumno.setApellido(rs.getString("apellido"));
//        }
//
//        // Cierra el Statement y la Connection
//        stmtConsulta.close();
//
//        // Retorna el alumno
//        return elAlumno;

    public void eliminar (Alumnos alu) throws HibernateException {

//        String laConsulta = "DELETE from alumnos WHERE alumno_id =" + this.getAlumnoId() ;
//         Statement sta = conn.createStatement();
//         sta.execute(laConsulta);
//         sta.close();

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(alu);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();
    }

    public void actualizar(Alumnos alu) throws HibernateException {

//        String laConsulta = "UPDATE alumnos SET apellido = '" + this.getApellido() + "', nombre = '" + this.getNombre() + "' WHERE alumno_id = " + this.getAlumnoId();
//         Statement sta = conn.createStatement();
//         sta.execute(laConsulta);
//         sta.close();

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.update(alu);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();
    }

    public void insertar(Alumnos alu) throws HibernateException {

//        String laConsulta = "INSERT INTO alumnos (alumno_id, nombre, apellido) VALUES (" + this.getAlumnoId() + ", '" + this.getNombre() + "', '" + this.getApellido() + "')";
//         Statement sta = conn.createStatement();
//         sta.execute(laConsulta);
//         sta.close();
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(alu);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();
    }
}
